home *** CD-ROM | disk | FTP | other *** search
- ;SIMPLE SAMPLE FOR WDOSX
- ;DON'T TAKE THE CODE TOO SERIOUS, IT IS ONLY TO SHOW HOW TO WRITE APPS
- ;USING WDOSX!
-
- .386p
- code segment use32
- assume cs:code,ds:code
- palette label dword
-
- ;STUPID PALETTE
-
- I=0
- REPT 256
- R=((I/16) AND 3) * 4
- G=((I/4) AND 3) * 4
- B=(I AND 3) * 4
- Y=(I/64) AND 3
- R=R*Y
- G=G*Y
- B=B*Y
- IFDIF <R>,<64>
- ELSE
- R=63
- ENDIF
- IFDIF <G>,<64>
- ELSE
- G=63
- ENDIF
- IFDIF <G>,<64>
- ELSE
- G=63
- ENDIF
- db R
- db G
- db B
- I=I+1
- ENDM
- start:
-
- ;ENABLE INTERRUPTS
-
- mov ax,0901h
- int 31h
-
- ;ALLOC 2MB OF MEM. THIS IS NOT REALLY NEEDED, BUT IT DEMONSTRATES HOW TO
- ;USE THE "API"
-
- mov edx,200000h
- mov ax,-1
- int 21h
-
- ;IF CARRY SET HERE, WE HAD A PROBLEM!
- ;SO WE SHOULD SAY: JC NOTIFY_THE_USER
- mov esp,edx ;shows how to easy fix up stack
-
- ;SET VIDEO MODE
- mov ax,13h
- int 10h
-
-
- ;DISABLE VI
-
- mov ax,0900h
- int 31h
-
- ;SET PALETTE
-
- cld
- mov esi,offset palette
- mov dx,03c8h
- sub al,al
- out dx,al
- inc dx
- mov cx,3*256
- rep outsb
-
- ;ENABLE VI
-
- mov ax,0901h
- int 31h
-
- ;GET A SELECTOR TO LOW MEMORY
-
- sub ax,ax
- mov cx,1
- int 31h
- mov bx,ax
-
- ;SELECTOR IN BX, SET LIMIT TO 4G
-
- mov ax,8
- stc
- sbb ecx,ecx
- sbb edx,edx
- int 31h
-
- ;SET ACCESS RIGHTS
-
- lar cx,bx
- mov cl,ch
- and cl,60h
- or cl,92h
- mov ch,0cfh
- mov ax,9
- int 31h
-
- ;SET BASE = 0
-
- sub cx,cx
- sub dx,dx
- mov ax,7
- int 31h
-
- ;LOAD SELECTOR INTO ES
-
- mov es,bx
-
- ;DRAW SOME STUFF
-
- mov edi,0a0000h
- mov bx,256
-
- sub al,al
- bloop:
- mov esi,200
- eloop:
- stosb
- add edi,319
- dec esi
- jnz eloop
- inc al
- sub edi,64000-1
- dec bx
- jnz bloop
-
- ;WAIT FOR ESC- KEYSTROKE
-
- tloop:
- sub ax,ax
- int 16h
- cmp ah,1
- jnz tloop
-
- ;SET TEXT MODE
-
- mov ax,3
- int 10h
-
- ;TERMINATE
-
- mov ah,4ch
- int 21h
-
- code ends
- end start
-